//
// 汉诺塔问题
// 难度：中等
//

#include <iostream>

void move(int plateNum, char origin, char assist, char destination) {
    // 只有一个盘的时候，可以直接移动，并且不需要递归
    if (plateNum == 1) {
        std::cout << origin << "->" << plateNum << "->" << destination << std::endl;
        return;
    }
    // 将上方的盘从原点移动到辅助柱
    move(plateNum - 1, origin, destination, assist);
    // 将需要移动的一个盘进行移动
    std::cout << origin << "->" << plateNum << "->" << destination << std::endl;
    // 将上方移动过的盘从辅助柱移回目标柱
    move(plateNum - 1, assist, origin, destination);
}

[[maybe_unused]] void hanoiTower() {
    int plateNum;
    std::cin >> plateNum;
    char origin, assist, destination;
    std::cin >> origin >> destination >> assist;
    move(plateNum, origin, assist, destination);
}
